package com.tyut.musicdreamer.service.gateway.config;

import cn.dev33.satoken.stp.StpInterface;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定义权限验证接口扩展
 */
@Primary
@Component
@Slf4j
public class SaTokenStpInterfaceImpl implements StpInterface {

    /**
     * 返回一个账号所拥有的权限码集合 
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 本项目暂时没有细粒度的权限控制，返回一个空集合
        // 在实际项目中，这里可以从数据库或缓存中获取权限信息
        List<String> permissionList = new ArrayList<>();
        
        // 记录日志
        log.debug("获取权限列表, loginId={}, loginType={}, permissionList={}", 
                loginId, loginType, permissionList);
        
        return permissionList;
    }

    /**
     * 返回一个账号所拥有的角色标识集合
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        // 这里模拟根据loginId获取角色信息
        // 在实际项目中，应该从数据库或缓存中获取
        List<String> roleList = new ArrayList<>();
        
        // 为了演示，这里简单地根据loginId判断角色
        // 实际项目中应该查询数据库
        String loginIdStr = String.valueOf(loginId);
        if ("1".equals(loginIdStr)) {
            roleList.add("admin"); // 管理员角色
        } else {
            roleList.add("user");  // 普通用户角色
        }
        
        // 记录日志
        log.debug("获取角色列表, loginId={}, loginType={}, roleList={}", 
                loginId, loginType, roleList);
        
        return roleList;
    }
} 